//  nodejs 遵循的是commonJS 规范 

//  导入 通过 require 引入
//  导出 exports  和 module.exports   modulename...


//  通过require来导入 
//  1. 是否是内置模块  2. 是否是包/插件  3.通过路径来找该文件

//  node 内置模块  fs  path   url

const fs = require("fs");
const path = require("path");
const url = require("url"); 

//  fs 文件 

//  读取文件内容  同步异步两种方法
//  异步读取
fs.readFile("./src/index.js","utf-8",(err,data)=>{
    // throw 自定义抛出内容(抛出自定义错误)
    if(err) throw err;
    console.log(data)
})

//  同步读取
// console.log(fs.readFileSync("./src/index.js","utf-8"));

//  写入(把之前的内容替换掉)

// fs.writeFile("./src/index.js","我是崔鹏鹏",err=>{
//     if(err) throw err;
//     console.log("文件内容写入成功");
//     console.log(fs.readFileSync("./src/index.js","utf-8"))
// })


//   追加内容
// fs.appendFile("./src/index.js","我们学习高级node",err=>{
//     if( err ) throw err;

//     console.log("添加成功");
// })


// 删除
// 异步删除
// fs.unlink("./src/demo.js",err => {
//     if(err) throw err;
//     console.log("删除成功")
// })

// 复制
// fs.copyFile("./index.html","./src/index.html",err=>{
//     if(err) throw err;
//     console.log("文件复制成功")
// })

// 文件夹的操作
// 1、创建 目录
// fs.mkdir("./dist",err=>{
//     if(err) throw err;

//     console.log("目录创建成功")
// })

// 2、删除目录
// fs.rmdir("./dist/",err=>{
//     if(err) throw err;
//     console.log("目录删除成功")
// })


//   检测 目录/文件是否存在   检测是文件/还是文件夹

// 1、stat 统计信息
// 返回stat的类
// fs.stat("./src",(err,stats)=>{
//     if(err) throw err;
//     console.log(stats.isFile())
// })


// 2、access 没有任何返回信息  存在返回undefined   不存在返回报错
// console.log(
//     fs.access("./src", err => {
//         if (err) throw err;
//     }))


//  3、existsSync  判断文件/文件夹是否存在
// console.log(fs.existsSync("./src"))


// let str="./src/index.html";

// let obj = {
//     root: '',
//     dir: './src',      
//     base: 'index.html',
//     ext: '.html',      
//     name: 'index'     
// }

// // path.parse 把 路径 解析成对象  
// console.log(path.parse(str));

// // path.format 把 对象格式化成 字符串
// console.log(path.format(obj));

// // 字符串拼接
// console.log(path.join(str,"/index"))

// console.log(url.parse(str,true))



// 删除目录  
// function delSrc (filePath) {
//     // 读取目录里面的文件
//     const result = fs.readdirSync(filePath);
//     console.log(result)
//     if(result.length>0){
//         result.forEach(item=>{
//             // console.log(fs.statSync(path.join(filePath,item)).isFile())
//             if(fs.statSync(path.join(filePath,item)).isFile()){
//                 fs.unlinkSync(path.join(filePath,item))
//             }else{
//                 delSrc(path.join(filePath,item))
//             }
//         })
//     }

//     fs.rmdirSync(filePath)

// }

// delSrc("./dist")
